package cn.flying.system.service.cm;


import java.util.List;

import cn.flying.base.common.vo.PageRequest;
import cn.flying.base.common.vo.PageResponse;
import cn.flying.base.common.vo.XmSelect;
import cn.flying.system.domain.cm.CmRole;
import cn.flying.system.domain.cm.CmRoleResource;
import cn.flying.system.domain.cm.CmUserRole;

/**
 * @description: 角色接口
 * @author: lvyong
 * @date: 2022年06月04日 21:05
 * @version: 1.0
 */
public interface CmRoleService {

    /**
     * 查询列表-分页
     *
     * @param pageRequest
     * @return
     */
    PageResponse<CmRole> getRolePageList(PageRequest<CmRole> pageRequest);

    /**
     * 根据主键ID查询信息
     *
     * @param id
     * @return
     */
    CmRole getRoleById(Long id);

    /**
     * 获取角色下拉框数据 xm-select
     *
     * @return
     */
    List<XmSelect> getRoleList();

    /**
     * 查询角色对应的资源集合
     *
     * @param roleId
     * @return
     */
    List<CmRoleResource> getRoleResourceList(String roleId);

    /**
     * 查询角色对应的资源集合
     *
     * @param roleIds
     * @return
     */
    List<CmRoleResource> getRoleResourceListByRoles(List<String> roleIds);

    /**
     * 查询用户的角色信息
     *
     * @param userId
     * @return
     */
    List<CmUserRole> getUserRoleList(String userId);

    /**
     * 保存新增信息
     *
     * @param role
     */
    void insertRole(CmRole role);

    /**
     * 保存修改信息
     *
     * @param role
     */
    void updateRoleById(CmRole role);

    /**
     * 根据主键ID删除
     *
     * @param id
     */
    void deleteRoleById(Long id);

    /**
     * 保存角色资源关联
     *
     * @param permissions
     */
    void insertRoleResources(List<CmRoleResource> permissions);
}
